#include "ScnsLedRgb.c.h"
#if defined(SCNS_LED_RGB_ENABLE)&&SCNS_LED_RGB_ENABLE==1

static const struct
{
    TIM_enum timB;
    TIM_enum timR;
    TIM_enum timG;
    TIM_PWMPIN_enum pinB;
    TIM_PWMPIN_enum pinR;
    TIM_PWMPIN_enum pinG;
}ptx[SCNS_LED_RGB_MAX]={
    {.pinB=TIM_2_CH3_C15,.pinR=TIM_2_CH2_C14,.pinG=TIM_2_CH1_C13,.timB=TIM_2,.timG=TIM_2,.timR=TIM_2},
    {.pinB=TIM_8_CH1_C00,.pinR=TIM_8_CH2_C01,.pinG=TIM_8_CH3_C02,.timB=TIM_8,.timG=TIM_8,.timR=TIM_8},  
};

ScnsLedRgbStatus scnsBspLedRgbInit(ScnsLedRgbEnum ledN)
{
    pwm_init(ptx[ledN].timB,ptx[ledN].pinB,10000,0);
    pwm_init(ptx[ledN].timR,ptx[ledN].pinR,10000,0);
    pwm_init(ptx[ledN].timG,ptx[ledN].pinG,10000,0);
    gpio_init(D7,GPO,1,GPO_PUSH_PULL);
    //gpio_init(C13,GPO,1,GPO_PUSH_PULL);
    gpio_init(C3,GPO,1,GPO_PUSH_PULL);
    return SCNS_LED_RGB_STATUS_OK;
}


ScnsLedRgbStatus scnsBspLedRgbPostInit(ScnsLedRgbEnum ledN)
{
    return SCNS_LED_RGB_STATUS_OK;
}

void scnsBspLedRgbSetR(ScnsLedRgbEnum ledN,uint16 r)
{
    pwm_duty_updata(ptx[ledN].timR,ptx[ledN].pinR,0.1f*r*PWM_DUTY_MAX/65535); 
}
void scnsBspLedRgbSetG(ScnsLedRgbEnum ledN,uint16 g)
{
    pwm_duty_updata(ptx[ledN].timG,ptx[ledN].pinG,0.1f*g*PWM_DUTY_MAX/65535); 
}
void scnsBspLedRgbSetB(ScnsLedRgbEnum ledN,uint16 b)
{
    pwm_duty_updata(ptx[ledN].timB,ptx[ledN].pinB,0.1f*b*PWM_DUTY_MAX/65535);    
}



#endif
